package sanrenxing.dayEnd.backRepertoryTotal.dao;


import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import sanrenxing.dayEnd.backRepertoryTotal.domain.TaStock;
import sanrenxing.dayEnd.backRepertoryTotal.domain.TaStockTwo;

import java.util.List;
import java.util.Map;

/**
 * 功能：TA库存的数据层接口类
 * 作者：赵思睿
 * 日期：2021/3/17 0017-14:01
 * 版本：1.0
 */
@Repository
public interface TaStockDao {
    /**
     * 将Ta库存信息添加到数据库表中
     * @param taStock Ta库存对象
     * @return 1：添加成功；0：添加失败
     */
    @Insert("insert into taStock values(seqTaStock.nextval,#{fundId},#{tatNum},#{tatMoney},to_date('${dates}','yyyy-MM-dd'),#{notes})")
    public int add(TaStock taStock);

    /**
     * 根据Ta库存编号删除Ta库存对象
     * @param tatId Ta库存编号
     * @return 1：删除成功；0：删除失败
     */
    @Delete("delete from taStock where tatId=#{tatId}")
    public int delete(@Param("tatId") String tatId);

    /**
     * 查询所有Ta库存信息
     * @param map 映射集合对象
     * @return Ta库存对象集合
     */
    @Select("<script>" +
            "select t.tatId,f.fundName,t.tatNum,t.tatMoney,t.dates,t.notes from " +
            "((select rownum rn,taStock.* from taStock <where>#{end}>=rownum</where>) t) " +
            "join fundSetup f on t.fundId=f.fundId" +
            "<where>" +
            "<if test='taStock.dates!=null'>" +
            " and to_char(dates,'yyyy-MM-dd')=#{taStock.dates}" +
            "</if>" +
            " and rn>=#{start}" +
            "</where>" +
            "</script>")
    public List<TaStockTwo> selectAll(Map<String, Object> map);

    /**
     * 统计记录数
     * @return 记录数
     */
    @Select("select count(*) as counts from taStock")
    public int count();

    /**
     * 查询昨天的资产净值
     * @return
     */
    @Select("select nvl(assetValue,0.0) from worthStatistics where to_char(netDate,'yyyy-MM-dd')=to_char((sysdate-1),'yyyy-MM-dd')")
    public Double findYesterDayValue();

    /**
     * 查询当天是否有数据，用于ta显示净值，如果没有则直接显示1
     * @return
     */
    @Select("select count(*) from worthStatistics where to_char(netDate,'yyyy-MM-dd')=to_char((sysdate-1),'yyyy-MM-dd')")
    public int counts();
}
